import numpy as np


def main():
    """
        为方便起见，索引从 1 开始数
        joiner[i, j] = 1 表示 j 应当被 i 消灭
        每个元素 i 毫无疑问都应当被自身消灭
        下表中，4 应当被 3 消灭 ------------ joiner[3, 4] == 1
        3 不应当被任何元素消灭 ------------ joiner[:, 3] == 0 （除了自身）
        2 应当被 1 或者 3 消灭，虽然 2 的权重比 3 高
        1 应当被 2 消灭，但如果 2 先被 3 干掉了，1 就不会被 3 干掉了 -----joiner[3, 1] == 0
        所以我期望保留下来的序数是 1、3
    """

    indexes = np.asarray([1, 2, 3, 4])
    weights = np.asarray([3, 4, 2, 1])
    joiner = np.asarray([
        [1, 1, 0, 1],
        [1, 1, 0, 0],
        [0, 1, 1, 1],
        [0, 0, 0, 1]
    ], dtype=np.float32)


main()
